﻿#region Header

/*
    This file is part of ndoctor-statistics.

    ndoctor-statistics is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    ndoctor-statistics is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with ndoctor-statistics.  If not, see <http://www.gnu.org/licenses/>.
*/

#endregion Header

namespace Probel.NDoctor.Statistics.Loggers
{
    using System;

    public interface ILog
    {
        #region Methods

        // Summary:
        //     Log a message object with the log4net.Core.Level.Debug level.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        // Remarks:
        //      This method first checks if this logger is DEBUG enabled by comparing the
        //     level of this logger with the log4net.Core.Level.Debug level. If this logger
        //     is DEBUG enabled, then it converts the message object (passed as parameter)
        //     to a string by invoking the appropriate log4net.ObjectRenderer.IObjectRenderer.
        //     It then proceeds to call all the registered appenders in this logger and
        //     also higher in the hierarchy depending on the value of the additivity flag.
        //     WARNING Note that passing an System.Exception to this method will print the
        //     name of the System.Exception but no stack trace. To print a stack trace use
        //     the log4net.ILog.Debug(System.Object,System.Exception) form instead.
        void Debug(object message);

        //
        // Summary:
        //     Log a message object with the log4net.Core.Level.Debug level including the
        //     stack trace of the System.Exception passed as a parameter.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        //   exception:
        //     The exception to log, including its stack trace.
        //
        // Remarks:
        //      See the log4net.ILog.Debug(System.Object) form for more detailed information.
        void Debug(object message, Exception exception);

        //
        // Summary:
        //     Logs a formatted message string with the log4net.Core.Level.Debug level.
        //
        // Parameters:
        //   format:
        //     A String containing zero or more format items
        //
        //   args:
        //     An Object array containing zero or more objects to format
        //
        // Remarks:
        //      The message is formatted using the String.Format method. See System.String.Format(System.String,System.Object[])
        //     for details of the syntax of the format string and the behavior of the formatting.
        //     This method does not take an System.Exception object to include in the log
        //     event. To pass an System.Exception use one of the log4net.ILog.Debug(System.Object,System.Exception)
        //     methods instead.
        void DebugFormat(string format, params object[] args);

        //
        // Summary:
        //     Logs a message object with the log4net.Core.Level.Error level.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        // Remarks:
        //      This method first checks if this logger is ERROR enabled by comparing the
        //     level of this logger with the log4net.Core.Level.Error level. If this logger
        //     is ERROR enabled, then it converts the message object (passed as parameter)
        //     to a string by invoking the appropriate log4net.ObjectRenderer.IObjectRenderer.
        //     It then proceeds to call all the registered appenders in this logger and
        //     also higher in the hierarchy depending on the value of the additivity flag.
        //     WARNING Note that passing an System.Exception to this method will print the
        //     name of the System.Exception but no stack trace. To print a stack trace use
        //     the log4net.ILog.Error(System.Object,System.Exception) form instead.
        void Error(object message);

        //
        // Summary:
        //     Log a message object with the log4net.Core.Level.Error level including the
        //     stack trace of the System.Exception passed as a parameter.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        //   exception:
        //     The exception to log, including its stack trace.
        //
        // Remarks:
        //      See the log4net.ILog.Error(System.Object) form for more detailed information.
        void Error(object message, Exception exception);

        //
        // Summary:
        //     Logs a formatted message string with the log4net.Core.Level.Error level.
        //
        // Parameters:
        //   format:
        //     A String containing zero or more format items
        //
        //   args:
        //     An Object array containing zero or more objects to format
        //
        // Remarks:
        //      The message is formatted using the String.Format method. See System.String.Format(System.String,System.Object[])
        //     for details of the syntax of the format string and the behavior of the formatting.
        //     This method does not take an System.Exception object to include in the log
        //     event. To pass an System.Exception use one of the log4net.ILog.Error(System.Object)
        //     methods instead.
        void ErrorFormat(string format, params object[] args);

        //
        // Summary:
        //     Log a message object with the log4net.Core.Level.Fatal level.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        // Remarks:
        //      This method first checks if this logger is FATAL enabled by comparing the
        //     level of this logger with the log4net.Core.Level.Fatal level. If this logger
        //     is FATAL enabled, then it converts the message object (passed as parameter)
        //     to a string by invoking the appropriate log4net.ObjectRenderer.IObjectRenderer.
        //     It then proceeds to call all the registered appenders in this logger and
        //     also higher in the hierarchy depending on the value of the additivity flag.
        //     WARNING Note that passing an System.Exception to this method will print the
        //     name of the System.Exception but no stack trace. To print a stack trace use
        //     the log4net.ILog.Fatal(System.Object,System.Exception) form instead.
        void Fatal(object message);

        //
        // Summary:
        //     Log a message object with the log4net.Core.Level.Fatal level including the
        //     stack trace of the System.Exception passed as a parameter.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        //   exception:
        //     The exception to log, including its stack trace.
        //
        // Remarks:
        //      See the log4net.ILog.Fatal(System.Object) form for more detailed information.
        void Fatal(object message, Exception exception);

        //
        // Summary:
        //     Logs a formatted message string with the log4net.Core.Level.Fatal level.
        //
        // Parameters:
        //   format:
        //     A String containing zero or more format items
        //
        //   arg0:
        //     An Object to format
        //
        //   arg1:
        //     An Object to format
        //
        //   arg2:
        //     An Object to format
        //
        // Remarks:
        //      The message is formatted using the String.Format method. See System.String.Format(System.String,System.Object[])
        //     for details of the syntax of the format string and the behavior of the formatting.
        //     This method does not take an System.Exception object to include in the log
        //     event. To pass an System.Exception use one of the log4net.ILog.Fatal(System.Object,System.Exception)
        //     methods instead.
        void FatalFormat(string format, params object[] args);

        //
        // Summary:
        //     Logs a message object with the log4net.Core.Level.Info level.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        // Remarks:
        //      This method first checks if this logger is INFO enabled by comparing the
        //     level of this logger with the log4net.Core.Level.Info level. If this logger
        //     is INFO enabled, then it converts the message object (passed as parameter)
        //     to a string by invoking the appropriate log4net.ObjectRenderer.IObjectRenderer.
        //     It then proceeds to call all the registered appenders in this logger and
        //     also higher in the hierarchy depending on the value of the additivity flag.
        //     WARNING Note that passing an System.Exception to this method will print the
        //     name of the System.Exception but no stack trace. To print a stack trace use
        //     the log4net.ILog.Info(System.Object,System.Exception) form instead.
        void Info(object message);

        //
        // Summary:
        //     Logs a message object with the INFO level including the stack trace of the
        //     System.Exception passed as a parameter.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        //   exception:
        //     The exception to log, including its stack trace.
        //
        // Remarks:
        //      See the log4net.ILog.Info(System.Object) form for more detailed information.
        void Info(object message, Exception exception);

        //
        // Summary:
        //     Logs a formatted message string with the log4net.Core.Level.Info level.
        //
        // Parameters:
        //   format:
        //     A String containing zero or more format items
        //
        //   args:
        //     An Object array containing zero or more objects to format
        //
        // Remarks:
        //      The message is formatted using the String.Format method. See System.String.Format(System.String,System.Object[])
        //     for details of the syntax of the format string and the behavior of the formatting.
        //     This method does not take an System.Exception object to include in the log
        //     event. To pass an System.Exception use one of the log4net.ILog.Info(System.Object)
        //     methods instead.
        void InfoFormat(string format, params object[] args);

        //
        // Summary:
        //     Log a message object with the log4net.Core.Level.Warn level.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        // Remarks:
        //      This method first checks if this logger is WARN enabled by comparing the
        //     level of this logger with the log4net.Core.Level.Warn level. If this logger
        //     is WARN enabled, then it converts the message object (passed as parameter)
        //     to a string by invoking the appropriate log4net.ObjectRenderer.IObjectRenderer.
        //     It then proceeds to call all the registered appenders in this logger and
        //     also higher in the hierarchy depending on the value of the additivity flag.
        //     WARNING Note that passing an System.Exception to this method will print the
        //     name of the System.Exception but no stack trace. To print a stack trace use
        //     the log4net.ILog.Warn(System.Object,System.Exception) form instead.
        void Warn(object message);

        //
        // Summary:
        //     Log a message object with the log4net.Core.Level.Warn level including the
        //     stack trace of the System.Exception passed as a parameter.
        //
        // Parameters:
        //   message:
        //     The message object to log.
        //
        //   exception:
        //     The exception to log, including its stack trace.
        //
        // Remarks:
        //      See the log4net.ILog.Warn(System.Object) form for more detailed information.
        void Warn(object message, Exception exception);

        //
        // Summary:
        //     Logs a formatted message string with the log4net.Core.Level.Warn level.
        //
        // Parameters:
        //   format:
        //     A String containing zero or more format items
        //
        //   args:
        //     An Object array containing zero or more objects to format
        //
        // Remarks:
        //      The message is formatted using the String.Format method. See System.String.Format(System.String,System.Object[])
        //     for details of the syntax of the format string and the behavior of the formatting.
        //     This method does not take an System.Exception object to include in the log
        //     event. To pass an System.Exception use one of the log4net.ILog.Warn(System.Object)
        //     methods instead.
        void WarnFormat(string format, params object[] args);

        #endregion Methods
    }
}